css: add properties for outline-radius
authorCosimo Cecchi <cosimoc@gnome.org>
Thu, 1 May 2014 16:11:23 +0000 (18:11 +0200)
committerCosimo Cecchi <cosimoc@gnome.org>
Thu, 1 May 2014 16:14:49 +0000 (18:14 +0200)
Both a shorthand and individual properties. This is not officially part
of the CSS standard, but there's precedence for it at least in Mozilla:
https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-outline-radius

gtk/gtkcssarrayvalue.c
gtk/gtkcssshorthandpropertyimpl.c
gtk/gtkcssstylepropertyimpl.c
gtk/gtkcsstypesprivate.h

index a221bf6c571b3c193b94aacd90794500e1b2092a..3491fb887deadfece6104203c069b528650d03c2 100644 (file)
@@ -277,6 +277,10 @@ gtk_css_value_array_transition (GtkCssValue *start,
     case GTK_CSS_PROPERTY_OUTLINE_STYLE:
     case GTK_CSS_PROPERTY_OUTLINE_WIDTH:
     case GTK_CSS_PROPERTY_OUTLINE_OFFSET:
+    case GTK_CSS_PROPERTY_OUTLINE_TOP_LEFT_RADIUS:
+    case GTK_CSS_PROPERTY_OUTLINE_TOP_RIGHT_RADIUS:
+    case GTK_CSS_PROPERTY_OUTLINE_BOTTOM_RIGHT_RADIUS:
+    case GTK_CSS_PROPERTY_OUTLINE_BOTTOM_LEFT_RADIUS:
     case GTK_CSS_PROPERTY_BORDER_TOP_COLOR:
     case GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR:
     case GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR:
index b01494b7da888fd165f144482b339b94423f49d6..15cd3596760be0d1ae8a0ea2b6ee1e6658973782 100644 (file)
@@ -1111,6 +1111,8 @@ _gtk_css_shorthand_property_init_properties (void)
                                          "border-top-color", "border-right-color", "border-bottom-color", "border-left-color",
                                          "border-image-source", "border-image-slice", "border-image-width", "border-image-repeat", NULL };
   const char *outline_subproperties[] = { "outline-width", "outline-style", "outline-color", NULL };
+  const char *outline_radius_subproperties[] = { "outline-top-left-radius", "outline-top-right-radius",
+                                                 "outline-bottom-right-radius", "outline-bottom-left-radius", NULL };
   const char *background_subproperties[] = { "background-image", "background-position", "background-size", "background-repeat", "background-clip", "background-origin",
                                              "background-color", NULL };
   const char *transition_subproperties[] = { "transition-property", "transition-duration", "transition-delay", "transition-timing-function", NULL };
@@ -1195,6 +1197,12 @@ _gtk_css_shorthand_property_init_properties (void)
                                           parse_border,
                                           NULL,
                                           NULL);
+  _gtk_css_shorthand_property_register   ("outline-radius",
+                                          G_TYPE_INT,
+                                          outline_radius_subproperties,
+                                          parse_border_radius,
+                                          unpack_border_radius,
+                                          pack_border_radius);
   _gtk_css_shorthand_property_register   ("outline",
                                           G_TYPE_NONE,
                                           outline_subproperties,
index 3ff3d76692024087eb3cda51a862b5a10ea5d050..745a69e93b81798d204bc58049e87c8782a9ac32 100644 (file)
@@ -1169,6 +1169,43 @@ _gtk_css_style_property_init_properties (void)
                                           assign_length_from_int,
                                           _gtk_css_number_value_new (0.0, GTK_CSS_PX));
 
+  gtk_css_style_property_register        ("outline-top-left-radius",
+                                          GTK_CSS_PROPERTY_OUTLINE_TOP_LEFT_RADIUS,
+                                          G_TYPE_NONE,
+                                          GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_NO_RESIZE,
+                                          border_corner_radius_value_parse,
+                                          NULL,
+                                          NULL,
+                                          _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
+                                                                     _gtk_css_number_value_new (0, GTK_CSS_PX)));
+  gtk_css_style_property_register        ("outline-top-right-radius",
+                                          GTK_CSS_PROPERTY_OUTLINE_TOP_RIGHT_RADIUS,
+                                          G_TYPE_NONE,
+                                          GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_NO_RESIZE,
+                                          border_corner_radius_value_parse,
+                                          NULL,
+                                          NULL,
+                                          _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
+                                                                     _gtk_css_number_value_new (0, GTK_CSS_PX)));
+  gtk_css_style_property_register        ("outline-bottom-right-radius",
+                                          GTK_CSS_PROPERTY_OUTLINE_BOTTOM_RIGHT_RADIUS,
+                                          G_TYPE_NONE,
+                                          GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_NO_RESIZE,
+                                          border_corner_radius_value_parse,
+                                          NULL,
+                                          NULL,
+                                          _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
+                                                                     _gtk_css_number_value_new (0, GTK_CSS_PX)));
+  gtk_css_style_property_register        ("outline-bottom-left-radius",
+                                          GTK_CSS_PROPERTY_OUTLINE_BOTTOM_LEFT_RADIUS,
+                                          G_TYPE_NONE,
+                                          GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_NO_RESIZE,
+                                          border_corner_radius_value_parse,
+                                          NULL,
+                                          NULL,
+                                          _gtk_css_corner_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX),
+                                                                     _gtk_css_number_value_new (0, GTK_CSS_PX)));
+
   gtk_css_style_property_register        ("background-clip",
                                           GTK_CSS_PROPERTY_BACKGROUND_CLIP,
                                           G_TYPE_NONE,
index 72511d96548a01ee6f296a0af978a9d54a8cdf8f..a6bf49a33d9422616623e4f298de6c4441d76ef0 100644 (file)
@@ -105,6 +105,10 @@ enum { /*< skip >*/
   GTK_CSS_PROPERTY_OUTLINE_STYLE,
   GTK_CSS_PROPERTY_OUTLINE_WIDTH,
   GTK_CSS_PROPERTY_OUTLINE_OFFSET,
+  GTK_CSS_PROPERTY_OUTLINE_TOP_LEFT_RADIUS,
+  GTK_CSS_PROPERTY_OUTLINE_TOP_RIGHT_RADIUS,
+  GTK_CSS_PROPERTY_OUTLINE_BOTTOM_RIGHT_RADIUS,
+  GTK_CSS_PROPERTY_OUTLINE_BOTTOM_LEFT_RADIUS,
   GTK_CSS_PROPERTY_BACKGROUND_CLIP,
   GTK_CSS_PROPERTY_BACKGROUND_ORIGIN,
   GTK_CSS_PROPERTY_BACKGROUND_SIZE,